A variety of technologies have been developed to provide varying degrees of customization or configuration of ICs to end users. For example, one class of IC, the application specific IC (ASIC), typically provides little or no customization. Put another way, an ASIC is typically customized at the design and fabrication stage for a particular end-use. As another example, FPGAs are ICs that are designed and manufactured in order to allow an end-user to program or configure the devices after fabrication or manufacturing has concluded. As a result, FPGAs provide relatively high levels of flexibility to end-users. The increase in flexibility typically results in larger die and higher cost than an ASIC geared towards a particular end-use.
Structured ASICs occupy an intermediate space between ASICs and FPGAs in term of flexibility and customization. Instead of providing programmability of resources, such as logic circuits and interconnect, like FPGAs do, structured ASICs typically use different sets of masks for fabrication of each design. For example, some logic circuitry, such as lookup tables (LUTs) are “hardened” (generally no longer programmable) during the fabrication of a structured ASIC by mapping the circuit into an arrangement of standard cells. The hardening occurs during fabrication of the devices, rather than when used by end-users, and results in changes in the circuitry integrated or fabricated in the substrate of the structured ASIC.